package greedy;

/**
 * @author : Rookie
 * @description : 最长子序和
 * @date : 2023/6/21
 */
public class MaxValueOfContinuousSubarray {

    public static void main(String[] args) {
        int[] arr = new int[] {-2,1,-3,4,-1,2,1,-5,4};
        int maxValue = getMaxValue(arr);
        System.out.println(maxValue);
    }

    /**
     * 获取最大值
     * 当连续和为负数时，直接丢弃
     * 使用result记录最大值，当前值比最大值大时，更新最大值* *
     * @param arr
     * @return
     */
    private static int getMaxValue(int[] arr) {
        int sum = 0;
        // 记录最大值
        int result = Integer.MIN_VALUE;
        for (int j : arr) {
            sum += j;
            if (sum > result) {
                result = sum;
            }
            if (sum < 0) {
                sum = 0;
            }
        }
        return result;
    }
}
